用途
用于需要定时的运维场景。启动执行后,OOS即将执行置于等待状态,直到指定的时刻才开始后续的任务。任务完成以后重新进入到等待状态。
限制
触发器有如下限制:
一个模版只允许有一个触发器动作。
触发器动作的任务必须定义在模版Tasks中的第一个任务。
被嵌套的模版(子模版)中不允许有触发器动作。
语法
YAML格式
Tasks:
- Name: timerTask # 任务名称
Action: ACS::TimerTrigger
Properties:
Type: cron # 必填,时间类型,可选cron、at或rate。
Expression: '0 * * ? * *' # 必填,cron表达式(cron默认是按UTC时间计算)、日期时间表达式或rate。
TimeZone: 'Asia/Shanghai' # 选填,所选时间对应的时区,默认为UTC。
EndDate: '2020-12-29T09:19:30Z' # 必填,终止时间(UTC时间,格式为YYYY-MM-DD或YYYY-MM-DDThh:mm:ssZ)。
JSON格式(请参考YAML注释说明)
{
"Tasks": [
{
"Name": "timerTask",
"Action": "ACS::TimerTrigger",
"Properties": {
"Type": "cron",
"Expression": "0 * * ? * *",
"EndDate": "2020-12-29T09:19:30Z",
"TimeZone": "Asia/Shanghai"
}
}
]
}
流程图
流程图说明如下:
用户创建执行后,父执行即进入等待(Waiting)状态。
到达指定时间后,父执行即进入执行中(Running)状态。同时,父执行自动创建一个子执行,使用同样的模板,同样的参数,但是跳过触发器任务(Trigger Task)直接执行后续任务。
等到子执行完成后,如图中的成功(Success)状态,也可以是失败(Failed)或取消状态(Cancelled),父执行重新进入等待(Waiting)状态,等待到达下次指定时间,然后重复上述步骤。
到达指定的终止时间后,父执行停止等待,完成执行并标记为成功(Success)。
用户可以像取消普通执行一样取消父执行或子执行,被取消的执行状态为取消(Cancelled)。
示例
cron类型
YAML格式:
FormatVersion: OOS-2019-06-01
Description: Schedule to reboot ECS instances.
Tasks:
- Name: timer
Action: ACS::TimerTrigger
Properties:
Type: cron
Expression: 5 minute
EndDate: 2020-12-20T00:00:00Z
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Properties:
InstanceId: "i-xxxxx"
JSON格式:
{
"FormatVersion": "OOS-2019-06-01",
"Description": "Schedule to reboot ECS instances.",
"Tasks": [
{
"Name": "timer",
"Action": "ACS::TimerTrigger",
"Properties": {
"Type": "cron",
"Expression": "5 minute",
"EndDate": "2020-12-20 00:00:00 UTC"
}
},
{
"Name": "rebootInstance",
"Action": "ACS::ECS::RebootInstance",
"Properties": {
"InstanceId": "i-xxxxx"
}
}
]
}
at类型
YAML格式:
FormatVersion: OOS-2019-06-01
Description: Schedule to reboot ECS instances.
Tasks:
- Name: timer
Action: ACS::TimerTrigger
Properties:
Type: at
Expression: '2020-02-29T09:17:35Z'
EndDate: 2020-12-20T00:00:00Z
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Properties:
InstanceId: "i-xxxxx"
JSON格式:
{
"FormatVersion": "OOS-2019-06-01",
"Description": "Schedule to reboot ECS instances.",
"Tasks": [
{
"Name": "timer",
"Action": "ACS::TimerTrigger",
"Properties": {
"Type": "at",
"Expression": "2020-02-29T09:17:35Z",
"EndDate": "2020-12-20T00:00:00.000Z"
}
},
{
"Name": "rebootInstance",
"Action": "ACS::ECS::RebootInstance",
"Properties": {
"InstanceId": "i-xxxxx"
}
}
]
}
文档内容是否对您有帮助?